Red Hat System Administration II 8.2

Упражнение под руководством преподавателя: Управление планированием процессов

В этом упражнении вы настроите приоритет запуска процессов с помощью команд nice и renice и увидите, как изменения повлияют на выполнение процессов.

Результаты

Вы сможете настроить приоритет запуска процессов.

Войдите на workstation как пользователь student с паролем student.

На workstation выполните команду lab tuning-procscheduling start. Эта команда запускает подготовительный сценарий, который проверяет доступность хоста servera в сети.

[student@workstation ~]$ lab tuning-procscheduling start
  1. На workstation с помощью SSH войдите на хост servera как пользователь student. Системы настроены на использование ключей SSH для аутентификации, поэтому пароль не требуется.

    [student@workstation ~]$ ssh student@servera
    ...output omitted...
    [student@servera ~]$ 
    
  2. Определите количество ядер ЦП на servera, а затем запустите два экземпляра команды sha1sum /dev/zero & для каждого ядра.

    1. Выполните команду grep, чтобы получить количество имеющихся виртуальных процессоров (ядер ЦП) из файла /proc/cpuinfo.

      [student@servera ~]$ grep -c '^processor' /proc/cpuinfo
      2
      
    2. Используйте команду цикла, чтобы запустить несколько экземпляров команды sha1sum /dev/zero &. Запустите по два экземпляра для каждого виртуального процессора, обнаруженного на предыдущем шаге. В данном примере это будут четыре экземпляра. Значения идентификаторов процессов (PID) в вашем выводе будут отличаться от показанных.

      [student@servera ~]$ for i in $(seq 1 4); do sha1sum /dev/zero & done
      [1] 2643
      [2] 2644
      [3] 2645
      [4] 2646
      
  3. Убедитесь, что для каждого процесса sha1sum выполняются фоновые задания.

    [student@servera ~]$ jobs
    [1]   Running                 sha1sum /dev/zero &
    [2]   Running                 sha1sum /dev/zero &
    [3]-  Running                 sha1sum /dev/zero &
    [4]+  Running                 sha1sum /dev/zero &
    
  4. Используйте команды ps и pgrep для отображения процента использования ЦП каждым процессом sha1sum.

    [student@servera ~]$ ps u $(pgrep sha1sum)
    USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    student   2643 49.8  0.0 228360  1744 pts/0    R    11:15   6:09 sha1sum /dev/zero
    student   2644 49.8  0.0 228360  1780 pts/0    R    11:15   6:09 sha1sum /dev/zero
    student   2645 49.8  0.0 228360  1748 pts/0    R    11:15   6:09 sha1sum /dev/zero
    student   2646 49.8  0.0 228360  1780 pts/0    R    11:15   6:09 sha1sum /dev/zero
    
  5. Завершите все процессы sha1sum и убедитесь, что не осталось выполняющихся заданий.

    1. Используйте команду pkill, чтобы завершить все запущенные процессы sha1sum.

      [student@servera ~]$ pkill sha1sum
      [2]   Terminated              sha1sum /dev/zero
      [4]+  Terminated              sha1sum /dev/zero
      [1]-  Terminated              sha1sum /dev/zero
      [3]+  Terminated              sha1sum /dev/zero
      
    2. Убедитесь, что нет выполняющихся заданий.

      [student@servera ~]$ jobs
      [student@servera ~]$ 
      
  6. Запустите несколько экземпляров команды sha1sum /dev/zero &, а затем запустите еще один экземпляр sha1sum /dev/zero & с фактором уступчивости 10. Запустите столько экземпляров, сколько в системе виртуальных процессоров. В этом примере запускаются три обычных экземпляра, а также еще один экземпляр с более высоким фактором уступчивости.

    1. Используйте цикл, чтобы запустить три экземпляра команды sha1sum /dev/zero &.

      [student@servera ~]$ for i in $(seq 1 3); do sha1sum /dev/zero & done
      [1] 1947
      [2] 1948
      [3] 1949
      
    2. Используйте команду nice для запуска четвертого экземпляра с фактором уступчивости 10.

      [student@servera ~]$ nice -n 10 sha1sum /dev/zero &
      [4] 1953
      
  7. Используйте команды ps и pgrep для отображения PID, процента использования ЦП, фактора уступчивости и имени исполняемой команды каждого процесса. Для экземпляра с фактором уступчивости 10 должен быть показан более низкий процент использования ЦП, чем для других экземпляров.

    [student@servera ~]$ ps -o pid,pcpu,nice,comm $(pgrep sha1sum)
      PID %CPU  NI COMMAND
     1947 66.0   0 sha1sum
     1948 65.7   0 sha1sum
     1949 66.1   0 sha1sum
     1953  6.7  10 sha1sum
    
  8. Выполните команду sudo renice, чтобы понизить фактор уступчивости процесса с предыдущего шага. Обратите внимание на значение PID у экземпляра процесса с фактором уступчивости 10. Понизьте фактор уступчивости процесса с этим PID до 5.

    [student@servera ~]$ sudo renice -n 5 1953
    [sudo] password for student: student
    1953 (process ID) old priority 10, new priority 5
    
  9. Повторите команды ps и pgrep, чтобы снова отобразить процент использования ЦП и фактор уступчивости.

    [student@servera ~]$ ps -o pid,pcpu,nice,comm $(pgrep sha1sum)
      PID %CPU  NI COMMAND
     1947 63.8   0 sha1sum
     1948 62.8   0 sha1sum
     1949 65.3   0 sha1sum
     1953  9.1   5 sha1sum
    
  10. Используйте команду pkill, чтобы завершить все запущенные процессы sha1sum.

    [student@servera ~]$ pkill sha1sum
    ...output omitted...
    
  11. Выйдите с servera.

    [student@servera ~]$ exit
    logout
    Connection to servera closed.
    [student@workstation ~]$ 
    

Конец

На workstation запустите сценарий lab tuning-procscheduling finish, чтобы закончить упражнение.

[student@workstation ~]$ lab tuning-procscheduling finish

Упражнение завершено.